/**
 * 
 */
package mm.back.dao.impl;

import genericos.dao.exeptions.PersistanceException;
import genericos.dao.exeptions.PersistenceServiceException;

import java.util.List;

import mm.back.dao.MMAbstractDAO;
import mm.back.dao.ReportesDAO;
import mm.back.entity.ro.ResumenVentas;
import mm.back.filtros.ReporteVentasFiltro;
import mm.exceptions.MMGenericException;

import org.hibernate.HibernateException;
import org.hibernate.Query;

/**
 * @author PUSDERKIS
 *
 */
public class ReportesDAOImpl extends MMAbstractDAO implements ReportesDAO {

	/**
	 * @see mm.back.dao.ReportesDAO#resumenVentas(mm.back.filtros.ReporteVentasFiltro)
	 */
	public List<ResumenVentas> resumenVentas(ReporteVentasFiltro rvf)
			throws MMGenericException {
StringBuffer sb = new StringBuffer();
		
		sb.append("FROM ResumenVentas rv where 1 = 1 ");

		sb.append(rvf.getWhereClause("rv"));
		
		try{
			if (logger.isDebugEnabled()){
				logger.debug("Recuperando la vista de resumen de ventas...");
			}
			
			Query q = universalHibernateDAO.getHibernateSession().createQuery(sb.toString());
			
			rvf.setWhereParameters(q);
						
			@SuppressWarnings("unchecked")
			List<ResumenVentas> pList = (List<ResumenVentas>) q.list();
			
			if(logger.isDebugEnabled()){
				logger.debug("Se recupero con exito el resumen de ventas...");
			}
			
			return pList;
			
		} catch (PersistenceServiceException e) {
			logger.error("Fallo al recuperar el resumen de ventas.",e);
			throw new MMGenericException(e.getMessage(),e);
		} catch (HibernateException e) {
			logger.error("Fallo al recuperar el resumen de ventas.",e);
			throw new MMGenericException(e.getMessage(),e);
		} catch (PersistanceException e) {
			logger.error("Fallo al recuperar el resumen de ventas.",e);
			throw new MMGenericException(e.getMessage(),e);
		}
	}


}
